package com.lilingguo.easyserver.container;

import com.lilingguo.easyserver.pojo.ServiceInfo;

import java.util.Set;

/**
 * 容器接口，存储服务信息
 *
 * @Author: 黎铃果
 * @Date: 2020/05/28 16:30
 */
public interface Container {

    /**
     *初始化容器
     */
    void init();

    /**
     * 保存服务信息
     * @param info 待保存信息
     * @return 若服务已存在则返回false
     */
    boolean saveInfo(ServiceInfo info);

    /**
     * 删除服务信息
     * @param info 待删除信息
     * @return 若服务不存在则返回false
     */
    boolean removeInfo(ServiceInfo info);

    /**
     * 删除过期服务信息
     */
    void removeExpiredInfos();

    /**
     * 根据服务名查询服务列表
     * @param appName 服务名
     * @return 服务集合
     */
    Set<ServiceInfo> getInfo(String appName);

    /**
     * 为某服务续约
     * @param info 待续约信息
     * @return 若服务不存在则返回false
     */
    boolean keepAlive(ServiceInfo info);

    /**
     * 返回所有服务列表
     * @return 所有服务的集合
     */
    Set<ServiceInfo> getAllData();
}
